<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
    <meta http-equiv="X-UA-Compatible" content="ie=edge,chrome=1">
    <meta name="referrer" content="never">
    <title>小结</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        ul {
            list-style: none;
        }
    </style>
</head>
<body>
    <!-- 小结：
        正则的作用：对字符串的处理： 替换/查找/提取  某个片段
        创建：
            1. 字面量形式  /模板/属性  i g m   
            2. 构造函数形式  new RegExp(模板, "属性")   当模板是变量或者表达式的值，使用此方式
            属性不分先后顺序
        
        元字符：  . \w(单词字符：数字/字母/_) \W  \d \D \s \S
        组合：[]  逐字 或 语句  范围：[0-9] [a-z] [f-k]  非表示：[^xxx]
        选择：多个字符捆绑 或 语句   x|y|z...
        边界：
            行边界    行起始 ^xxx   行截至 xxx$   起始截至必须是正则的首尾
            单词边界     \b  有方向：前后
            非单词边界   \B  有方向：前后
        
        量词：  * >= 0   + >= 1  ? 0 || 1  {n}  {n,}  {n,m}
            贪婪匹配原则
            量词?  打破贪婪匹配，一次结果输出尽可能少的内容
        
        捕获组： (xxx)
            1. 将某个内容作为整体进行筛选
            2. 输出匹配内容中的某个片段
            非捕获组： (?:xxx)  只将内容作为整体，不作为结果输出
            反向引用：\n  n表示第n个捕获组匹配的结果
            按名引用：\k<name>  引用使用(?<name>xxxx)定义的捕获组匹配的结果
        
        环视断言：
            前瞻断言：匹配后面是否跟着某个值
                肯定：x(?=y)
                否定：x(?!y)
            后瞻断言：匹配前面是否跟着某个值
                肯定：(?<=y)x
                否定：(?<!y)x
        
        使用正则的方法：
            reg.lastIndex 匹配起始下标，可读写的值，常搭配 reg.exec 方法使用，搭配 y 值使用
            
            reg.exec(string) 匹配字符串中符合条件的值 [xxx, index:xx]   带g：循环匹配

            reg.test(string) 测试字符串是否含有模板内容，true/false

            string.match(reg)  效果类似于 reg.exec， 带 g 输出全部匹配的内容组成数组

            string.search(reg)
            string.split(reg)
            string.replace(reg, function|使用特殊字符) -->
        
    <script type="text/javascript">
        
        var str = "hello world, I'm coming soon.";

        var reg = /o/g;

        reg.lastIndex = 9;
        console.log("reg.lastIndex", reg.lastIndex);
        console.log(reg.exec(str)); // [o, index: 18]

        var yReg = /o/y; // 从 lastIndex 位置开始匹配，没找到就返回 null   精确匹配：常用于很长的字符串的匹配效率
        yReg.lastIndex = 4;
        console.log(yReg.exec(str)); // null
    </script>
</body>
</html>